package org.jsola.hr.dto;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.validator.constraints.Length;
import org.jsola.core.dto.BaseDTO;

import java.util.Date;
import javax.validation.constraints.NotNull;

import static org.jsola.core.example.BaseExample.E_ID;
import static org.jsola.core.example.BaseExample.M_ID_NOT_NULL;
import static org.jsola.core.example.BaseExample.N_ID;
import static org.jsola.hr.example.EmpSocRelatedExample.E_EMP_ID;
import static org.jsola.hr.example.EmpSocRelatedExample.E_IMPORT_JSON;
import static org.jsola.hr.example.EmpSocRelatedExample.E_ME_ACCOUNT;
import static org.jsola.hr.example.EmpSocRelatedExample.E_ME_INCREASE_DATE;
import static org.jsola.hr.example.EmpSocRelatedExample.E_ME_PLAN_INCREASE_DATE;
import static org.jsola.hr.example.EmpSocRelatedExample.E_ME_PLAN_STOP_DATE;
import static org.jsola.hr.example.EmpSocRelatedExample.E_ME_STATE;
import static org.jsola.hr.example.EmpSocRelatedExample.E_ME_STOP_DATE;
import static org.jsola.hr.example.EmpSocRelatedExample.E_PF_ACCOUNT;
import static org.jsola.hr.example.EmpSocRelatedExample.E_PF_INCREASE_DATE;
import static org.jsola.hr.example.EmpSocRelatedExample.E_PF_PLAN_INCREASE_DATE;
import static org.jsola.hr.example.EmpSocRelatedExample.E_PF_PLAN_SEALED_DATE;
import static org.jsola.hr.example.EmpSocRelatedExample.E_PF_SEALED_DATE;
import static org.jsola.hr.example.EmpSocRelatedExample.E_PF_STATE;
import static org.jsola.hr.example.EmpSocRelatedExample.E_SCHEME_ID;
import static org.jsola.hr.example.EmpSocRelatedExample.E_SOC_ACCOUNT;
import static org.jsola.hr.example.EmpSocRelatedExample.E_SOC_INCREASE_DATE;
import static org.jsola.hr.example.EmpSocRelatedExample.E_SOC_PLAN_INCREASE_DATE;
import static org.jsola.hr.example.EmpSocRelatedExample.E_SOC_PLAN_STOP_DATE;
import static org.jsola.hr.example.EmpSocRelatedExample.E_SOC_STATE;
import static org.jsola.hr.example.EmpSocRelatedExample.E_SOC_STOP_DATE;
import static org.jsola.hr.example.EmpSocRelatedExample.M_EMP_ID_MAX;
import static org.jsola.hr.example.EmpSocRelatedExample.M_EMP_ID_NOT_NULL;
import static org.jsola.hr.example.EmpSocRelatedExample.M_IMPORT_JSON_MAX;
import static org.jsola.hr.example.EmpSocRelatedExample.M_ME_ACCOUNT_MAX;
import static org.jsola.hr.example.EmpSocRelatedExample.M_PF_ACCOUNT_MAX;
import static org.jsola.hr.example.EmpSocRelatedExample.M_SCHEME_ID_MAX;
import static org.jsola.hr.example.EmpSocRelatedExample.M_SOC_ACCOUNT_MAX;
import static org.jsola.hr.example.EmpSocRelatedExample.N_EMP_ID;
import static org.jsola.hr.example.EmpSocRelatedExample.N_IMPORT_JSON;
import static org.jsola.hr.example.EmpSocRelatedExample.N_ME_ACCOUNT;
import static org.jsola.hr.example.EmpSocRelatedExample.N_ME_INCREASE_DATE;
import static org.jsola.hr.example.EmpSocRelatedExample.N_ME_PLAN_INCREASE_DATE;
import static org.jsola.hr.example.EmpSocRelatedExample.N_ME_PLAN_STOP_DATE;
import static org.jsola.hr.example.EmpSocRelatedExample.N_ME_STATE;
import static org.jsola.hr.example.EmpSocRelatedExample.N_ME_STOP_DATE;
import static org.jsola.hr.example.EmpSocRelatedExample.N_PF_ACCOUNT;
import static org.jsola.hr.example.EmpSocRelatedExample.N_PF_INCREASE_DATE;
import static org.jsola.hr.example.EmpSocRelatedExample.N_PF_PLAN_INCREASE_DATE;
import static org.jsola.hr.example.EmpSocRelatedExample.N_PF_PLAN_SEALED_DATE;
import static org.jsola.hr.example.EmpSocRelatedExample.N_PF_SEALED_DATE;
import static org.jsola.hr.example.EmpSocRelatedExample.N_PF_STATE;
import static org.jsola.hr.example.EmpSocRelatedExample.N_SCHEME_ID;
import static org.jsola.hr.example.EmpSocRelatedExample.N_SOC_ACCOUNT;
import static org.jsola.hr.example.EmpSocRelatedExample.N_SOC_INCREASE_DATE;
import static org.jsola.hr.example.EmpSocRelatedExample.N_SOC_PLAN_INCREASE_DATE;
import static org.jsola.hr.example.EmpSocRelatedExample.N_SOC_PLAN_STOP_DATE;
import static org.jsola.hr.example.EmpSocRelatedExample.N_SOC_STATE;
import static org.jsola.hr.example.EmpSocRelatedExample.N_SOC_STOP_DATE;

/**
 * 员工社保相关信息表
 *
 * @author zhr
 */
@EqualsAndHashCode(callSuper = true)
@ApiModel(description = "修改【员工社保相关信息表】的参数")
@Data
public class EmpSocRelatedUpdateDTO extends BaseDTO {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(notes = N_ID, example = E_ID, required = true)
    @NotNull(message = M_ID_NOT_NULL)
    private String id;

    @ApiModelProperty(notes = N_EMP_ID, example = E_EMP_ID, required = true)
    @NotNull(message = M_EMP_ID_NOT_NULL)
    @Length(max = 32, message = M_EMP_ID_MAX)
    private String empId;

    @ApiModelProperty(notes = N_SCHEME_ID, example = E_SCHEME_ID)
    @Length(max = 32, message = M_SCHEME_ID_MAX)
    private String schemeId;

    @ApiModelProperty(notes = N_SOC_STATE, example = E_SOC_STATE)
    private Integer socState;

    @ApiModelProperty(notes = N_PF_STATE, example = E_PF_STATE)
    private Integer pfState;

    @ApiModelProperty(notes = N_ME_STATE, example = E_ME_STATE)
    private Integer meState;

    @ApiModelProperty(notes = N_SOC_ACCOUNT, example = E_SOC_ACCOUNT)
    @Length(max = 50, message = M_SOC_ACCOUNT_MAX)
    private String socAccount;

    @ApiModelProperty(notes = N_ME_ACCOUNT, example = E_ME_ACCOUNT)
    @Length(max = 50, message = M_ME_ACCOUNT_MAX)
    private String meAccount;

    @ApiModelProperty(notes = N_PF_ACCOUNT, example = E_PF_ACCOUNT)
    @Length(max = 50, message = M_PF_ACCOUNT_MAX)
    private String pfAccount;

    @ApiModelProperty(notes = N_SOC_PLAN_INCREASE_DATE, example = E_SOC_PLAN_INCREASE_DATE)
    private Date socPlanIncreaseDate;

    @ApiModelProperty(notes = N_PF_PLAN_INCREASE_DATE, example = E_PF_PLAN_INCREASE_DATE)
    private Date pfPlanIncreaseDate;

    @ApiModelProperty(notes = N_ME_PLAN_INCREASE_DATE, example = E_ME_PLAN_INCREASE_DATE)
    private Date mePlanIncreaseDate;

    @ApiModelProperty(notes = N_SOC_INCREASE_DATE, example = E_SOC_INCREASE_DATE)
    private Date socIncreaseDate;

    @ApiModelProperty(notes = N_PF_INCREASE_DATE, example = E_PF_INCREASE_DATE)
    private Date pfIncreaseDate;

    @ApiModelProperty(notes = N_ME_INCREASE_DATE, example = E_ME_INCREASE_DATE)
    private Date meIncreaseDate;

    @ApiModelProperty(notes = N_SOC_PLAN_STOP_DATE, example = E_SOC_PLAN_STOP_DATE)
    private Date socPlanStopDate;

    @ApiModelProperty(notes = N_PF_PLAN_SEALED_DATE, example = E_PF_PLAN_SEALED_DATE)
    private Date pfPlanSealedDate;

    @ApiModelProperty(notes = N_ME_PLAN_STOP_DATE, example = E_ME_PLAN_STOP_DATE)
    private Date mePlanStopDate;

    @ApiModelProperty(notes = N_SOC_STOP_DATE, example = E_SOC_STOP_DATE)
    private Date socStopDate;

    @ApiModelProperty(notes = N_PF_SEALED_DATE, example = E_PF_SEALED_DATE)
    private Date pfSealedDate;

    @ApiModelProperty(notes = N_ME_STOP_DATE, example = E_ME_STOP_DATE)
    private Date meStopDate;

    @ApiModelProperty(notes = N_IMPORT_JSON, example = E_IMPORT_JSON)
    @Length(max = 2147483647, message = M_IMPORT_JSON_MAX)
    private String importJson;


}

